Previous topicNext topic
Help > Operators >
Operator Precedence
·parentheses ( )
·exponentiation (^)
·negation (-)
·multiplication (*), floating point division (/)
·integer division (\)
·modulo (MOD)
·addition (+), subtraction (-)
·relational operators (<, <=, =, >=, >, <>)
·NOT, ISFALSE, ISTRUE
·AND
·OR, XOR (exclusive OR)
·EQV (equivalence)
·IMP (implication)

For example, the expression 3+6 / 3 evaluates to 5, not 3. Division has a higher priority than addition, so the division operation (6 / 3) is performed first. Even though the compiler will not get confused, people still could, so a better programming style might be to use 3 + (6 / 3) or 3 + 6/3, either using parentheses or spacing to make the intent clear. Otherwise it is easy to misread the statement as (3 + 6) / 3.

To handle operations of the same priority, PowerBASIC proceeds from left to right. For example, in the expression 4 - 3 + 6, the subtraction (4 - 3) is performed before the addition (3 + 6), producing the intermediate expression 1 + 6.

Operations inside parentheses are of the highest priority and are always evaluated first. Within parentheses, standard precedence is used. Use parentheses like garlic: generously, but not to excess.

Another example of the effect of Order of Precedence on an expression follows:

x = -1^2

At first glance, the result of 1 may be the expected result (since -1 * -1 = 1); however, the unary negation operator has a lower precedence than exponentiation, so the expression is evaluated as x& = -(1^2) which gives a result value of -1. As noted above, the use of parentheses can clarify the intended expression:

x = (-1)^2

 

See Also

Arithmetic Operators

Relational Operators